/**
 * 线下微信扫码支付
 */
package com.pay.sdk.service.pay;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

import com.pay.sdk.common.Configure;
import com.pay.sdk.service.IPostService;
import com.pay.sdk.util.MD5Utils;
import com.pay.sdk.util.RandomStringGenerator;

public class XyWechatScanPay extends IPostService {

    private static final String SERVICE_NAME = "api.xy.weixin.native";
    private static final String SERVICE_VERSION = "1.0";
    private static final String SERVICE_CHARSET = "UTF-8";
    private static final String SERVICE_SIGN_TYPE = "MD5";
  

    @Override
    public String exec(Map<String, String> params){
    	//通用参数
//        params.put("version", SERVICE_VERSION);
//        params.put("charset", SERVICE_CHARSET);
//        params.put("sign_type",SERVICE_SIGN_TYPE);
        //请求参数
        params.put("service", SERVICE_NAME);
        params.put("merchant_no", Configure.getMerchantNo());
        params.put("out_trade_no", params.get("out_trade_no"));
        params.put("total_fee", params.get("total_fee"));
        params.put("body", params.get("body"));
		params.put("notify_url",params.get("notify_url"));
		try {
			params.put("client_ip", InetAddress.getLocalHost().getHostAddress());
		} catch (UnknownHostException e) {
			e.printStackTrace();
		}
		params.put("nonce_str", RandomStringGenerator.getRandomStringByLength(32));
		params.put("device_info", params.get("device_info"));
		params.put("time_start", new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));
		
		params = MD5Utils.signMap(params, SERVICE_SIGN_TYPE, Configure.getKey(), SERVICE_CHARSET);
        return txn(Configure.isDevEnv() ? Configure.PAY_GATEWAY_DEV_API : Configure.PAY_GATEWAY_API, params);
    }
}
